#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main()
{
    pid_t  pid;

    pid = fork();
    if(pid < 0) {
        perror("fork error ");
        exit(1);
    }
    
    if(pid == 0) {
        printf("这个是 fork 的子进程: %d\n", getpid());
        printf("该子进程的父进程为: %d\n", getppid());
        printf("\n");
    } else {
        sleep(1);   // 父进程睡眠一会，防止子进程成为孤儿进程, 同时子进程大概率会优先执行
        printf("这是 for 前的父进程: %d\n", getpid());
        printf("该父进程的父进程(爷爷): %d\n", getppid());
        printf("该父进程的子进程: %d\n", pid);
        printf("\n");
    }


    for(int i = 1; i <= 4; i++) {
        printf("i = %d\n", i);
    }

    return 0;
}

